package com.gzedu.frame.logic;

import java.util.Map;

import android.os.AsyncTask;

import com.gzedu.frame.logic.net.json.JsonParser;

/**
 * <font color="#0000FF"> <p>JSON解析异步类<br></p>
 * <p>注意事项：<br></p>
 * <li>1、 初始化时，必须提供回调接口ICallBack</li>
 * <p>在执行完异步操作后，将JSON 解析数据通过ICallBack回调<br></p>
 * <li>2、传递异步参数时，必须按照指定的顺序传递参数</li>
 * <p>第一个参数：接口域名 url地址</p>
 * <p>第二个参数：接口参数<code> Map<String,String></code>格式</p>
 * <p>第三个参数：接口提交方式 post/get</p>
 * <li>3、如果传递的参数不足，则返回一个空对象</li>
 * </font>
 * @Title: JsonBaseLogic.java
 * @Package com.gzedu.frame.logic
 * @company: 广州远程教育中心有限公司
 * @author : 戴俊林
 * @date 2012-8-28 上午11:14:49
 * @version V1.0
 */
public class JsonBaseLogic extends AsyncTask<Object, Double, Object> {

	/**
	 * 回调接口
	 */
	private ICallBack iCallBack = null;

	/**
	 * Json 数据解析器
	 */
	private JsonParser jsonLogic;

	/**
	 * 
	 * @param _iCallBack
	 *            回调接口
	 */
	public JsonBaseLogic(ICallBack _iCallBack) {
		iCallBack = _iCallBack;
	}

	@Override
	protected Object doInBackground(Object... params) {
		if (params.length >= 3) {
			String requestMethodType = (String) params[2];
			jsonLogic = new JsonParser(requestMethodType);
			String url = (String) params[0];
			@SuppressWarnings("unchecked")
			Map<String, String> formMap = (Map<String, String>) params[1];
			return jsonLogic.getJsonDate(url, formMap);
		} else {
			return null;
		}
	}

	@Override
	protected void onPostExecute(Object result) {
		iCallBack.logicFinish(result);
	}

}
